package cn.tedu._07vehicle.controller;

import cn.tedu._07vehicle.base.response.JsonResult;
import jdk.security.jarsigner.JarSigner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/v1/file/")
public class UploadController {
    /*
    MultipartFile参数
     */
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //终极目标:将文件保存到服务器的指定目录中;
        //完整路径: d:/files/2025/11/19/822a300b-e309-4eab-b54b-581974f45b5a.jpg
        //****************第1步:处理文件名******************
        //1.1获取原始文件名: zly.jpg
        String filename = file.getOriginalFilename();
        //1.2获取文件名中的后缀: .jpg
        String suffix = filename.substring(filename.lastIndexOf("."));
        //1.3生成全球唯一的文件名: 822a300b-e309-4eab-b54b-581974f45b5a.jpg
        filename = UUID.randomUUID() + suffix;
        //****************第2步:处理文件存储目录******************
        String dirPath = "d:/files";
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
        //datePath:/2025/11/19/
        String datePath = sdf.format(new Date());
        //****************第3步:创建对应的目录********************
        // d:/files/2025/11/19/
        File f = new File(dirPath + datePath);
        if (!f.exists()) {
            f.mkdirs();
        }
        //****************第4步:将文件保存到指定目录******************
        String filePath = dirPath + datePath + filename;
        file.transferTo(new File(filePath));
        /*
        Web前端工程师:http://localhost:8080/2025/11/19/be7cf3a0-d50f-4229-8c3c-dc1518d212e1.jpg

         */
        log.debug("原始文件名: " + datePath);
        return JsonResult.ok(datePath+filename);
    }
}
